ime: Stop using ::hierarchy-changed
authorMatthias Clasen <mclasen@redhat.com>
Sat, 23 Feb 2019 05:31:10 +0000 (00:31 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 23 Feb 2019 14:43:57 +0000 (09:43 -0500)
We don't need it at all here.

gtk/gtkimcontextime.c
gtk/gtkimcontextime.h

index 768e123fbe63c011c187484b6d9b45215105a042..62961eb3b38e8a16b377b37611ee9d6f7c30589f 100644 (file)
@@ -121,9 +121,6 @@ gtk_im_context_ime_message_filter               (GdkWin32Display *display,
 static void get_window_position                 (GdkSurface       *win,
                                                  gint            *x,
                                                  gint            *y);
-static void cb_client_widget_hierarchy_changed  (GtkWidget       *widget,
-                                                 GtkWidget       *widget2,
-                                                 GtkIMContextIME *context_ime);
 
 G_DEFINE_TYPE_WITH_CODE (GtkIMContextIME, gtk_im_context_ime, GTK_TYPE_IM_CONTEXT,
                         gtk_im_module_ensure_extension_point ();
@@ -157,7 +154,6 @@ static void
 gtk_im_context_ime_init (GtkIMContextIME *context_ime)
 {
   context_ime->client_surface         = NULL;
-  context_ime->toplevel               = NULL;
   context_ime->use_preedit            = TRUE;
   context_ime->preediting             = FALSE;
   context_ime->opened                 = FALSE;
@@ -687,7 +683,6 @@ gtk_im_context_ime_focus_in (GtkIMContext *context)
     {
       gdk_win32_display_add_filter (gdk_surface_get_display (toplevel),
                                     gtk_im_context_ime_message_filter, context_ime);
-      context_ime->toplevel = toplevel;
     }
   else
     {
@@ -696,19 +691,6 @@ gtk_im_context_ime_focus_in (GtkIMContext *context)
       return;
     }
 
-  /* trace reparenting (probably no need) */
-  gdk_surface_get_user_data (context_ime->client_surface, (gpointer) & widget);
-  if (GTK_IS_WIDGET (widget))
-    {
-      g_signal_connect (widget, "hierarchy-changed",
-                        G_CALLBACK (cb_client_widget_hierarchy_changed),
-                        context_ime);
-    }
-  else
-    {
-      /* warning? */
-    }
-
   /* restore preedit context */
   ImmSetConversionStatus (himc,
                           context_ime->priv->conversion_mode,
@@ -794,15 +776,6 @@ gtk_im_context_ime_focus_out (GtkIMContext *context)
       context_ime->preediting = FALSE;
     }
 
-  /* remove signal handler */
-  gdk_surface_get_user_data (context_ime->client_surface, (gpointer) & widget);
-  if (GTK_IS_WIDGET (widget))
-    {
-      g_signal_handlers_disconnect_by_func
-        (G_OBJECT (widget),
-         G_CALLBACK (cb_client_widget_hierarchy_changed), context_ime);
-    }
-
   /* remove event fileter */
   toplevel = gdk_surface_get_toplevel (context_ime->client_surface);
   if (GDK_IS_SURFACE (toplevel))
@@ -810,7 +783,6 @@ gtk_im_context_ime_focus_out (GtkIMContext *context)
       gdk_win32_display_remove_filter (gdk_surface_get_display (toplevel),
                                        gtk_im_context_ime_message_filter,
                                        context_ime);
-      context_ime->toplevel = NULL;
     }
   else
     {
@@ -1017,6 +989,7 @@ gtk_im_context_ime_message_filter (GdkWin32Display *display,
   GtkIMContextIME *context_ime;
   HWND hwnd;
   HIMC himc;
+  GdkSurface *toplevel;
   GdkWin32MessageFilterReturn retval = GDK_WIN32_MESSAGE_FILTER_CONTINUE;
 
   g_return_val_if_fail (GTK_IS_IM_CONTEXT_IME (data), retval);
@@ -1026,7 +999,8 @@ gtk_im_context_ime_message_filter (GdkWin32Display *display,
   if (!context_ime->focus)
     return retval;
 
-  if (gdk_win32_surface_get_impl_hwnd (context_ime->toplevel) != msg->hwnd)
+  toplevel = gdk_surface_get_toplevel (context_ime->client_surface);
+  if (gdk_win32_surface_get_impl_hwnd (toplevel) != msg->hwnd)
     return retval;
 
   hwnd = gdk_win32_surface_get_impl_hwnd (context_ime->client_surface);
@@ -1163,29 +1137,3 @@ get_window_position (GdkSurface *surface, gint *x, gint *y)
   if (parent && parent != toplevel)
     get_window_position (parent, x, y);
 }
-
-
-/*
- *  probably, this handler isn't needed.
- */
-static void
-cb_client_widget_hierarchy_changed (GtkWidget       *widget,
-                                    GtkWidget       *widget2,
-                                    GtkIMContextIME *context_ime)
-{
-  GdkSurface *new_toplevel;
-
-  g_return_if_fail (GTK_IS_WIDGET (widget));
-  g_return_if_fail (GTK_IS_IM_CONTEXT_IME (context_ime));
-
-  if (!context_ime->client_surface)
-    return;
-  if (!context_ime->focus)
-    return;
-
-  new_toplevel = gdk_surface_get_toplevel (context_ime->client_surface);
-  if (context_ime->toplevel == new_toplevel)
-    return;
-
-  context_ime->toplevel = new_toplevel;
-}
index 4d0a99e5d66bdf28a4b3c44e6520099e7b2ec815..6091c499b6176822872f0de2d6501b8ab6b44652 100644 (file)
@@ -37,7 +37,6 @@ struct _GtkIMContextIME
   GtkIMContext object;
 
   GdkSurface *client_surface;
-  GdkSurface *toplevel;
   guint use_preedit : 1;
   guint preediting : 1;
   guint opened : 1;